Ce tutoriel a pour objectif de vous introduire l’utilisation du client en ligne de commande (« Command Line Interface » ou CLI) de base OpenStack.
Il existe différentes manières d’utiliser OpenStack:
Avec ce tutoriel, vous apprendrez à utiliser le CLI pour créer une machine virtuelle (VM), vous y connecter en ssh, créer un volume cinder et l’attacher à la VM.
Notes de lecture :
Les commandes à exécuter sont écrites dans un encadré, en police de caractère « courrier ».
Les commandes que vous devez exécuter sur votre propre station de travail sont préfixées avec « user@cli# ».
Les commandes que vous devez exécuter dans votre machine virtuelle sont préfixées avec « cloud-user@vm# ».
Vous trouverez toutes les informations nécessaires à la création d’un compte dans l’article registration.
Cet article peut aussi vous permettre de réinitialiser votre mot de passe, si vous avez l’avez perdu.
Le client en ligne de commande d’OpenStack est écrit en language Python. Vous trouverez toutes les information nécessaires sur la page officielle d’OpenStack.
La configuration du client se fait à l’aide de variables d’environnement. Vous trouverez les informations nécessaires à la configuration du client dans l’article configuration du client.
Une fois que vous avez configuré votre client, vous pouvez vérifier votre configuration avec la commande suivante
user@cli # openstack token issue
Pour pouvoir se connecter en SSH sur les machines virtuelles, vous devez importer votre clef publique SSH dans votre compte OpenStack. Si vous ne possédez pas de clé, vous pouvez en créer une avec l’outil openstack.
Vous remarquerez que vous devez fournir un nom de clé. Ce nom est libre, vous pouvez choisir le nom que vous voulez. Vous devrez utiliser ce nom pour associer cette clé au lancement d’une machine virtuelle.
La commande suivante permet d’insérer votre clé publique en la nommant « ma-clef-ssh »:
user@cli# openstack keypair create --public-key $HOME/.ssh/id_rsa.pub ma-clef-ssh
Attention!: n’exécuter pas cette commande si vous possedez déjà une clé !
La commande suivante permet de créer une nouvelle clé SSH en la nommant « ma-clef-ssh ». Cette commande stocke la clé publique dans votre compte OpenStack et enregister la clé privée dans un fichier:
user@cli # mkdir -p $HOME/.ssh/ && \
openstack keypair create ma-clef-ssh > $HOME/.ssh/id_rsa && \
chmod 600 $HOME/.ssh/id_rsa
Une machine virtuelle (VM) nécessite la gestion d’un ensemble de paramètres:
l’image de boot, contenant le système d’exploitation (Operating System ou OS) le gabarit (ou flavor) qui définit les paramètres de la VM: nombre de vCPU, quantité de mémoire, taille du disque système. Vous noterez que la taille du disque système peut être supérieure ou égale à de l’image de boot.
Les images qui peuvent être utilisées pour démarrer une instance de VM sont
contenues dans un catalogue d’images appelé Glance.
On utilise ce catalogue grâce à la commande glance
.
Vous pouvez obtenir la liste des images publiques avec la commande suivante:
user@cli # glance image-list --visibility public
Avant de démarrer votre image, vous devez choisir un gabarit.
IJCLAB propose des gabarits allant de 1 à 48 vCPUs avec 2Gb (giga bytes) de RAM par vCPU et un disque système de 20Gb.
Attention ! Il est possible que certains gabarits ne puissent pas être utilisés suivant le niveau d’utilisation de l’infrastructure.
Vous pouvez lister les gabarits disponibles avec la commande suivante:
user@cli # nova flavor-list
Vous pouvez instancier (c’est à dire démarrer) votre machine virtuelle avec la commande « nova« . Vous ferez bien attention à fournir le nom de votre clé SSH « ma-clef-ssh », comme vu dans le paragraphe « clé publique ».
user@cli# nova boot --flavor os.1 --image cirros --key-name ma-clef-ssh masupervm
Vous pouvez suivre la progression du démarrage avec la commande suivante:
user@cli# nova list
Vous pouvez vous connecter sur la machine virtuelle avec votre clef SSH pour laquelle vous avez fourni la partie publique au paragraphe « clé publique ».
Attention: Par défaut, le compte root est désactivé et vous ne pouvez donc pas vous connecter en tant que root. Si vous essayez de vous connecter en tant que root, la machine vous indiquera le compte utilisateur à utiliser pour vous connecter.
user@cli # ssh cirros@134.158.75.118
coud-user@vm # hostname
masupervm
Avec votre première VM, la connexion devrait se passer sans problème.
Mais avec le temps, vous serez amenés à instancier différentes VM. Si vous ne faites aucune configuration spécifique concernant le réseau, le middleware OpenStack gère de manière autonome le réseau pour vos VM. Il est donc fort probable qu’une même adresse IP soit réutilisée pour différentes VM. En vous connectant avec SSH, vous pouvez donc voir apparaitre le message suivant:
ssh cirros@134.158.75.118
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
SHA256:v0hDGZG1AxJGeby3t32L7AFomMuWC78So+AbAbVuHxc.
Please contact your system administrator.
Add correct host key in $HOME/.ssh/known_hosts to get rid of this message.
Offending RSA key in $HOME/.ssh/known_hosts:259
RSA host key for 134.158.75.112 has changed and you have requested strict checking.
Host key verification failed.
En général, cette erreur indique un problème grave de sécurité. Mais comme vous
travaillez sur le cloud et que vous savez qu’une même adresse peut être réutilisée
pour différentes VM, vous pouvez effacer en toute sécurité la ligne incriminée
(259, dans notre exemple) dans le fichier $HOME/.ssh/known_hosts
, sur votre poste de travail.
OpenStack fourni un service de « Block Storage as a Service » ou « Volume à la demande« . Ce service permet de créer des volumes supplémentaires qui auront un cycle de vie indépendant des machines virtuelles et qui pourront être attachés aux machines virtuelles. La gestion des volumes se fait grâce à la commande cinder.
Les instances de machine virtuelles utilisent ces volumes comme des disques durs.
Créer un volume Pour créer un volume, vous pouvez utiliser la commande suivante:
user@cli# cinder create --name volume-$USER 5
Pour attacher ce volume (69debc26-1c20-4cd3-91c0-930589263a8b
) à l’instance
« masupervm », vous pouvez utiliser la commande suivante:
user@cli# nova volume-attach masupervm 69debc26-1c20-4cd3-91c0-930589263a8b auto
Le volume /dev/vdb
est maintenant présent sur notre serveur
user@cli# ssh cirros@134.158.75.118
cloud-user@vm # sudo su -
cloud-user@vm # fdisk -l /dev/vdb
Disk /dev/vdb: 5368 MB, 5368709120 bytes
16 heads, 63 sectors/track, 10402 cylinders, total 10485760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Disk /dev/vdb doesn't contain a valid partition table
Il faut d’abord creer une partition et monter le volume
parted /dev/vdb mklabel gpt
parted --align none /dev/vdb -- mkpart primary xfs 0 -1
mkfs.xfs /dev/vdb1
mkdir /data
mount /dev/vdb1 /data
En suite, ce volume peut être utilisé comme n’importe quel espace de stockage (disque dur externe, clé USB etc.)
NOTE: Il est possible d’attacher automatiquement un disque au démarrage de l’instance. Ce cas d’utilisation n’est pas traité dans le tutoriel
Pour « détacher » le volume, vous pouvez utiliser la commande suivante:
user@cli# nova volume-detach masupervm 69debc26-1c20-4cd3-91c0-930589263a8b
Après avoir détaché le volume, vous pouvez le supprimer avec la commande suivante:
user@cli# cinder delete 69debc26-1c20-4cd3-91c0-930589263a8b
Pour arrêter la machine, il faut utiliser la commande
user@cli# nova delete masupervm